_TITLE "Lotus Graph"
' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2024.07.14.16.44]) on 2024.08.31 at 17:55 (Coordinated Universal Time)
' This program is a port and mod by Charlie Veniot
' of a QB64 port by Luis Alberto Migliorero (https://www.facebook.com/share/p/SopXe3tgxxsWgkHR/)
' of a C64 (CBM BASIC v2) program by Alvaro Alonso G. (https://www.facebook.com/share/p/KsTAzh7ee41PnVQN/)
210 SCREEN _NEWIMAGE( 641, 481, 17 )
300 REM constants =======================
310 dr = _PI / 180
320 REM screen resolution ===============
350 xc = INT( _WIDTH / 2 ) : REM center screen
360 yc = INT( _HEIGHT / 2 ) : REM center screen
370 REM axis ============================
380 LINE( 0, yc ) - ( XMAX, yc )
390 LINE( xc, 0 ) - ( xc, YMAX )
cadj% = 0
400 REM ========================
410 h2 = _PI / 2
420 k2 = 2
430 k3 = 3
440 k5 = 0.25
450 k6 = 6
460 k8 = 8
470 ra = 150
480 u = 1 : REM Definition of u
490 z = 0 : REM Definition of z
500 REM Draw the petals fully colored
510 FOR rScale = ra TO 0 STEP -.1 : REM Gradually Lowering Radio to Fill
cadj2% = 0
520 FOR a = 0 TO 360 STEP .1
530 t = a * dr
540 p1 = ABS( COS( k3 * t ) ) + k2 * ( k5 - ABS( COS( k3 * t + h2 ) ) )
550 p2 = k2 + k8 * ABS( COS( k6 * t + h2 ) )
560 r = rScale * ( u + p1 / p2 )
570 x2 = xc + r * COS( t )
580 y2 = yc - r * SIN( t )
c% = INT( ( ra - rScale ) \ 10 + 1 ) + cadj% + cadj2%
IF c% = 0 THEN cadj2% = 1 : c% = c% + 1
590 PSET( INT( x2 ), INT( y2 ) ), c% : REM Choose color based on distance
600 NEXT a
SLEEP 0.001
610 NEXT rScale
cadj% = cadj% + 1
SLEEP 1
IF _MOUSEBUTTON THEN WHILE _MOUSEBUTTON : WEND
GOTO 400